/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamanjeniskegiatan;

import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Space;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Toolbarbutton;

/**
 *
 * @author hendro
 */
public class PerekamanJenisKegiatanWnd extends ClassApplicationModule {

    private Textbox txtboxJenisKegiatan;
    private Textbox txtboxKodeJenisKegiatan;
    private Button btnSimpan;
    private Button btnBatal;
    private Grid gridJenisKegiatan;
    private PerekamanJenisKegiatanDAO jenisDAO;
    private Listbox lstboxJenisKegiatan;

    public PerekamanJenisKegiatanWnd() {
        jenisDAO = new PerekamanJenisKegiatanDAOImpl();
    }

    public void onCreate() throws Exception {
        txtboxJenisKegiatan = (Textbox) getFellow("txtboxJenisKegiatan");
        txtboxKodeJenisKegiatan = (Textbox) getFellow("txtboxKodeJenisKegiatan");
        btnSimpan = (Button) getFellow("btnSimpan");
        btnBatal = (Button) getFellow("btnBatal");
        lstboxJenisKegiatan = (Listbox) getFellow("lstboxJenisKegiatan");
        clear();
        load();

    }

    public void clear() {
        txtboxJenisKegiatan.setValue("");
        txtboxKodeJenisKegiatan.setValue("");
    }

    public void inActiveComponent(boolean value){
        txtboxJenisKegiatan.setDisabled(value);
        txtboxKodeJenisKegiatan.setDisabled(value);
    }

    public void lstboxJenisKegiatanOnSelect() throws Exception {
        inActiveComponent(true);
        PerekamanJenisKegiatan jenis = (PerekamanJenisKegiatan) lstboxJenisKegiatan.getSelectedItem().getValue();
        txtboxJenisKegiatan.setValue(jenis.getJenisKegiatan());
        txtboxKodeJenisKegiatan.setValue(jenis.getKodeJenisKegiatan() + "");
    }

    public void load() throws Exception{
        lstboxJenisKegiatan.getItems().clear();
        int no = 1;
        int i = 0;
        for (final PerekamanJenisKegiatan jenis : jenisDAO.list()) {
            Listitem item = new Listitem();
            item.setValue(jenis);
            item.appendChild(new Listcell(String.valueOf(no++)));
            item.appendChild(new Listcell(jenis.getJenisKegiatan()));

            Listcell cellAksi = new Listcell();

            Toolbarbutton btnUbah = new Toolbarbutton();
            btnUbah.setLabel("[ubah]");
            btnUbah.setId("btnUbah"+ (i++));
            btnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    inActiveComponent(false);
                    txtboxJenisKegiatan.setValue(jenis.getJenisKegiatan());
                    txtboxKodeJenisKegiatan.setValue(jenis.getKodeJenisKegiatan() + "");
                }
            });

            final Toolbarbutton btnHapus = new Toolbarbutton();
            btnHapus.setLabel("[hapus]");
            btnHapus.setId("btnHapus"+ (i++));
            btnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    if (Messagebox.show("Apakah data Jenis Kegiatan: " + jenis.getJenisKegiatan() + " akan dihapus?", "Pesan Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                        try {
                            jenisDAO.delete(jenis);
                        } catch (Exception ex) {
                            Messagebox.show("Gagal menghapus data: " + ex.getMessage(),"Pesan Kesalahan",Messagebox.YES,Messagebox.ERROR);
                        }

                        btnHapus.addForward(null, btnBatal, "onClick");
                    }
                }
            });
            cellAksi.appendChild(btnUbah);
            cellAksi.appendChild(new Space());
            cellAksi.appendChild(btnHapus);
            item.appendChild(cellAksi);
            lstboxJenisKegiatan.appendChild(item);
        }
    }

    public void btnBatalOnClick() throws Exception {
        clear();
        load();
        inActiveComponent(false);
    }

    public void btnSimpanOnClick() throws Exception {
        if (txtboxJenisKegiatan.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan masukan Jenis Kegiatan", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
            txtboxJenisKegiatan.setFocus(true);
            return;
        }

        PerekamanJenisKegiatan jenis = new PerekamanJenisKegiatan();
        jenis.setJenisKegiatan(txtboxJenisKegiatan.getValue());

        if (txtboxKodeJenisKegiatan.getValue().isEmpty()) {
            //new
            if (jenisDAO.select(jenis.getJenisKegiatan()).size() <= 0) {
                try {
                    jenisDAO.insert(jenis);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Jenis Kegiatan: " + jenis.getJenisKegiatan() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }

        } else {
            //update
            jenis.setKodeJenisKegiatan(Integer.valueOf(txtboxKodeJenisKegiatan.getValue()));
            if (jenisDAO.select(jenis.getKodeJenisKegiatan(), jenis.getJenisKegiatan()).size() <= 0) {
                try {
                    jenisDAO.update(jenis);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Jenis Kegiatan: " + jenis.getJenisKegiatan() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }
        }

    }
}
